package com.luojing.suanfa.xianxingbiao;

import java.util.ArrayList;

/**
 * 合并2个从小到大顺序排列的数组,并且新数组也是从小到大排序
 * @author luojing
 * @create 2018/09/23 上午10:34
 **/
public class Test1 {

 static int[] array1 = {1,5,7,23,66};
  static int[] array2 = {2,3,4,8,33,44,50,76};


  //算法思路:比较2个数组每一个位置的元素,如果小的就加入到新的集合中,然后小的那个数组的元素位置后移,继续与另一个数组的当前位置相比,直到
  //其中一个数组没元素可比,那么另一个数组元素可以直接加入到新数组中
  public static ArrayList<Integer> mergeArrays(int[] arrayOne, int[] arrayTwo) {
    int arrayOneLen = arrayOne.length;
    int arrayTwoLen = arrayTwo.length;
    ArrayList<Integer> resultArray = new ArrayList<Integer>();
    int i = 0, j = 0;

    while (i < arrayOneLen || j < arrayTwoLen) {
      if (i == arrayOneLen && j < arrayTwoLen) {
        resultArray.add(arrayTwo[j]);
        j++;
      } else if (i < arrayOneLen && j == arrayTwoLen) {
        resultArray.add(arrayOne[i]);
        i++;
      } else {
        if (arrayOne[i] <= arrayTwo[j]) {
          resultArray.add(arrayOne[i]);
          i++;
        } else if (arrayOne[i] > arrayTwo[j]) {
          resultArray.add(arrayTwo[j]);
          j++;
        }
      }
    }

    return resultArray;
  }

  public static void main(String[] args) {
    System.out.println(mergeArrays(array1,array2).toString());
  }
}
